home *** CD-ROM | disk | FTP | other *** search
/ Maclife 157 / MACLIFE157-2001-09.ISO.7z / MACLIFE157-2001-09.ISO / Linux / MacOS Tools / Other / BootX 1.1.3 (for Old Mac OS) / Sources / lib / From MoreFiles / FSpCompat.h < prev    next >
Text File  |  2001-07-23  |  17KB  |  489 lines

  1. /*
  2. **    Apple Macintosh Developer Technical Support
  3. **
  4. **    FSSpec compatibility functions.
  5. **
  6. **    by Jim Luther, Apple Developer Technical Support Emeritus
  7. **
  8. **    File:        FSpCompat.h
  9. **
  10. **    Copyright ゥ 1992-1998 Apple Computer, Inc.
  11. **    All rights reserved.
  12. **
  13. **    You may incorporate this sample code into your applications without
  14. **    restriction, though the sample code has been provided "AS IS" and the
  15. **    responsibility for its operation is 100% yours.  However, what you are
  16. **    not permitted to do is to redistribute the source as "DSC Sample Code"
  17. **    after having made changes. If you're going to re-distribute the source,
  18. **    we require that you make it clear in the source that the code was
  19. **    descended from Apple Sample Code, but that you've made changes.
  20. */
  21.  
  22. #ifndef __FSPCOMPAT__
  23. #define __FSPCOMPAT__
  24.  
  25. #include <Types.h>
  26. #include <Files.h>
  27.  
  28. #include "Optimization.h"
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. /*****************************************************************************/
  35.  
  36. pascal    OSErr    FSMakeFSSpecCompat(short vRefNum,
  37.                                    long dirID,
  38.                                    ConstStr255Param fileName,
  39.                                    FSSpec *spec);
  40. /*    ヲ Initialize a FSSpec record.
  41.     The FSMakeFSSpecCompat function fills in the fields of an FSSpec record.
  42.     If the file system can't create the FSSpec, then the compatibility code
  43.     creates a FSSpec that is exactly like an FSSpec except that spec.name
  44.     for a file may not have the same capitalization as the file's catalog
  45.     entry on the disk volume. That is because fileName is parsed to get the
  46.     name instead of getting the name back from the file system. This works
  47.     fine with System 6 where FSMakeSpec isn't available.
  48.     
  49.     vRefNum        input:    Volume specification.
  50.     dirID        input:    Directory ID.
  51.     fileName    input:    Pointer to object name, or nil when dirID specifies
  52.                         a directory that's the object.
  53.     spec        output:    A file system specification to be filled in by
  54.                         FSMakeFSSpecCompat.
  55.     
  56.     Result Codes
  57.         noErr                0        No error    
  58.         nsvErr                -35        Volume doesnユt exist    
  59.         fnfErr                -43        File or directory does not exist
  60.                                     (FSSpec is still valid)    
  61. */
  62.  
  63. /*****************************************************************************/
  64.  
  65. pascal    OSErr    FSpOpenDFCompat(const FSSpec *spec,
  66.                                 char permission,
  67.                                 short *refNum);
  68. /*    ヲ Open a file's data fork.
  69.     The FSpOpenDFCompat function opens the data fork of the file specified
  70.     by spec.
  71.     Differences from FSpOpenDF: If FSpOpenDF isn't available,
  72.     FSpOpenDFCompat uses PHBOpen because System 6 doesn't support PBHOpenDF.
  73.     This means FSpOpenDFCompat could accidentally open a driver if the
  74.     spec->name begins with a period.
  75.     
  76.     spec        input:    An FSSpec record specifying the file whose data
  77.                         fork is to be opened.
  78.     permission    input:    A constant indicating the desired file access
  79.                         permissions.
  80.     refNum        output:    A reference number of an access path to the file's
  81.                         data fork.
  82.     
  83.     Result Codes
  84.         noErr                0        No error    
  85.         nsvErr                -35        No such volume    
  86.         ioErr                -36        I/O error    
  87.         bdNamErr            -37        Bad filename    
  88.         tmfoErr                -42        Too many files open    
  89.         fnfErr                -43        File not found    
  90.         opWrErr                -49        File already open for writing    
  91.         permErr                -54        Attempt to open locked file for writing    
  92.         dirNFErr            -120    Directory not found or incomplete pathname
  93.         afpAccessDenied        -5000    User does not have the correct access to
  94.                                     the file
  95.     
  96.     __________
  97.     
  98.     See also:    FSpOpenAware
  99. */
  100.  
  101. /*****************************************************************************/
  102.  
  103. pascal    OSErr    FSpOpenRFCompat(const FSSpec *spec,
  104.                                 char permission,
  105.                                 short *refNum);
  106. /*    ヲ Open a file's resource fork.
  107.     The FSpOpenRFCompat function opens the resource fork of the file
  108.     specified by spec.
  109.     
  110.     spec        input:    An FSSpec record specifying the file whose resource
  111.                         fork is to be opened.
  112.     permission    input:    A constant indicating the desired file access
  113.                         permissions.
  114.     refNum        output:    A reference number of an access path to the file's
  115.                         resource fork.
  116.     
  117.     Result Codes
  118.         noErr                0        No error    
  119.         nsvErr                -35        No such volume    
  120.         ioErr                -36        I/O error    
  121.         bdNamErr            -37        Bad filename    
  122.         tmfoErr                -42        Too many files open    
  123.         fnfErr                -43        File not found    
  124.         opWrErr                -49        File already open for writing    
  125.         permErr                -54        Attempt to open locked file for writing    
  126.         dirNFErr            -120    Directory not found or incomplete pathname
  127.         afpAccessDenied        -5000    User does not have the correct access to
  128.                                     the file
  129.     
  130.     __________
  131.     
  132.     See also:    FSpOpenRFAware
  133. */
  134.  
  135.  
  136. /*****************************************************************************/
  137.  
  138. pascal    OSErr    FSpCreateCompat(const FSSpec *spec,
  139.                                 OSType creator,
  140.                                 OSType fileType,
  141.                                 ScriptCode scriptTag);
  142. /*    ヲ Create a new file.
  143.     The FSpCreateCompat function creates a new file with the specified
  144.     type, creator, and script code.
  145.     Differences from FSpCreate: FSpCreateCompat correctly sets the
  146.     fdScript in the file's FXInfo record to scriptTag if the problem
  147.     isn't fixed in the File Manager code.
  148.     
  149.     spec        input:    An FSSpec record specifying the file to create.
  150.     creator        input:    The creator of the new file.
  151.     fileType    input    The file type of the new file.
  152.     scriptCode    input:    The code of the script system in which the file
  153.                         name is to be displayed.
  154.     
  155.     Result Codes
  156.         noErr                0        No error    
  157.         dirFulErr            -33        File directory full    
  158.         dskFulErr            -34        Disk is full    
  159.         nsvErr                -35        No such volume    
  160.         ioErr                -36        I/O error    
  161.         bdNamErr            -37        Bad filename    
  162.         fnfErr                -43        Directory not found or incomplete pathname    
  163.         wPrErr                -44        Hardware volume lock    
  164.         vLckdErr            -46        Software volume lock    
  165.         dupFNErr            -48        Duplicate filename and version    
  166.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  167.         afpAccessDenied        -5000    User does not have the correct access    
  168.         afpObjectTypeErr    -5025    A directory exists with that name    
  169. */
  170.  
  171. /*****************************************************************************/
  172.  
  173. pascal    OSErr    FSpDirCreateCompat(const FSSpec *spec,
  174.                                    ScriptCode scriptTag,
  175.                                    long *createdDirID);
  176. /*    ヲ Create a new directory.
  177.     The FSpDirCreateCompat function creates a new directory and returns the
  178.     directory ID of the newDirectory.
  179.     
  180.     spec            input:    An FSSpec record specifying the directory to
  181.                             create.
  182.     scriptCode        input:    The code of the script system in which the
  183.                             directory name is to be displayed.
  184.     createdDirID    output:    The directory ID of the directory that was
  185.                             created.
  186.     
  187.     Result Codes
  188.         noErr                0        No error    
  189.         dirFulErr            -33        File directory full    
  190.         dskFulErr            -34        Disk is full    
  191.         nsvErr                -35        No such volume    
  192.         ioErr                -36        I/O error    
  193.         bdNamErr            -37        Bad filename    
  194.         fnfErr                -43        Directory not found or incomplete pathname    
  195.         wPrErr                -44        Hardware volume lock    
  196.         vLckdErr            -46        Software volume lock    
  197.         dupFNErr            -48        Duplicate filename and version    
  198.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  199.         wrgVolTypErr        -123    Not an HFS volume    
  200.         afpAccessDenied        -5000    User does not have the correct access    
  201. */
  202.  
  203. /*****************************************************************************/
  204.  
  205. pascal    OSErr    FSpDeleteCompat(const FSSpec *spec);
  206. /*    ヲ Delete a file or directory.
  207.     The FSpDeleteCompat function deletes a file or directory.
  208.     
  209.     spec            input:    An FSSpec record specifying the file or 
  210.                             directory to delete.
  211.     
  212.     Result Codes
  213.         noErr                0        No error    
  214.         nsvErr                -35        No such volume    
  215.         ioErr                -36        I/O error    
  216.         bdNamErr            -37        Bad filename    
  217.         fnfErr                -43        File not found    
  218.         wPrErr                -44        Hardware volume lock    
  219.         fLckdErr            -45        File is locked    
  220.         vLckdErr            -46        Software volume lock    
  221.         fBsyErr                -47        File busy, directory not empty, or
  222.                                     working directory control block open    
  223.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  224.         afpAccessDenied        -5000    User does not have the correct access    
  225. */
  226.  
  227. /*****************************************************************************/
  228.  
  229. pascal    OSErr    FSpGetFInfoCompat(const FSSpec *spec,
  230.                                   FInfo *fndrInfo);
  231. /*    ヲ Get the finder information for a file.
  232.     The FSpGetFInfoCompat function gets the finder information for a file.
  233.  
  234.     spec        input:    An FSSpec record specifying the file.
  235.     fndrInfo    output:    If the object is a file, then its FInfo.
  236.     
  237.     Result Codes
  238.         noErr                0        No error    
  239.         nsvErr                -35        No such volume    
  240.         ioErr                -36        I/O error    
  241.         bdNamErr            -37        Bad filename    
  242.         fnfErr                -43        File not found    
  243.         paramErr            -50        No default volume    
  244.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  245.         afpAccessDenied        -5000    User does not have the correct access    
  246.         afpObjectTypeErr    -5025    Directory not found or incomplete pathname    
  247.     
  248.     __________
  249.     
  250.     Also see:    FSpGetDInfo
  251. */
  252.  
  253. /*****************************************************************************/
  254.  
  255. pascal    OSErr    FSpSetFInfoCompat(const FSSpec *spec,
  256.                                   const FInfo *fndrInfo);
  257. /*    ヲ Set the finder information for a file.
  258.     The FSpSetFInfoCompat function sets the finder information for a file.
  259.  
  260.     spec        input:    An FSSpec record specifying the file.
  261.     fndrInfo    input:    The FInfo.
  262.     
  263.     Result Codes
  264.         noErr                0        No error    
  265.         nsvErr                -35        No such volume    
  266.         ioErr                -36        I/O error    
  267.         bdNamErr            -37        Bad filename    
  268.         fnfErr                -43        File not found    
  269.         wPrErr                -44        Hardware volume lock    
  270.         fLckdErr            -45        File is locked    
  271.         vLckdErr            -46        Software volume lock    
  272.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  273.         afpAccessDenied        -5000    User does not have the correct access    
  274.         afpObjectTypeErr    -5025    Object was a directory    
  275.     
  276.     __________
  277.     
  278.     Also see:    FSpSetDInfo
  279. */
  280.  
  281. /*****************************************************************************/
  282.  
  283. pascal    OSErr    FSpSetFLockCompat(const FSSpec *spec);
  284. /*    ヲ Lock a file.
  285.     The FSpSetFLockCompat function locks a file.
  286.  
  287.     spec        input:    An FSSpec record specifying the file.
  288.     
  289.     Result Codes
  290.         noErr                0        No error    
  291.         nsvErr                -35        No such volume    
  292.         ioErr                -36        I/O error    
  293.         fnfErr                -43        File not found    
  294.         wPrErr                -44        Hardware volume lock    
  295.         vLckdErr            -46        Software volume lock    
  296.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  297.         afpAccessDenied        -5000    User does not have the correct access to
  298.                                     the file    
  299.         afpObjectTypeErr    -5025    Folder locking not supported by volume    
  300. */
  301.  
  302. /*****************************************************************************/
  303.  
  304. pascal    OSErr    FSpRstFLockCompat(const FSSpec *spec);
  305. /*    ヲ Unlock a file.
  306.     The FSpRstFLockCompat function unlocks a file.
  307.  
  308.     spec        input:    An FSSpec record specifying the file.
  309.     
  310.     Result Codes
  311.         noErr                0        No error    
  312.         nsvErr                -35        No such volume    
  313.         ioErr                -36        I/O error    
  314.         fnfErr                -43        File not found    
  315.         wPrErr                -44        Hardware volume lock    
  316.         vLckdErr            -46        Software volume lock    
  317.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  318.         afpAccessDenied        -5000    User does not have the correct access to
  319.                                     the file    
  320.         afpObjectTypeErr    -5025    Folder locking not supported by volume    
  321. */
  322.  
  323. /*****************************************************************************/
  324.  
  325. pascal    OSErr    FSpRenameCompat(const FSSpec *spec,
  326.                                 ConstStr255Param newName);
  327. /*    ヲ Rename a file or directory.
  328.     The FSpRenameCompat function renames a file or directory.
  329.  
  330.     spec        input:    An FSSpec record specifying the file.
  331.     newName        input:    The new name of the file or directory.
  332.     
  333.     Result Codes
  334.         noErr                0        No error    
  335.         dirFulErr            -33        File directory full    
  336.         dskFulErr            -34        Volume is full    
  337.         nsvErr                -35        No such volume    
  338.         ioErr                -36        I/O error    
  339.         bdNamErr            -37        Bad filename    
  340.         fnfErr                -43        File not found    
  341.         wPrErr                -44        Hardware volume lock    
  342.         fLckdErr            -45        File is locked    
  343.         vLckdErr            -46        Software volume lock    
  344.         dupFNErr            -48        Duplicate filename and version    
  345.         paramErr            -50        No default volume    
  346.         fsRnErr                -59        Problem during rename    
  347.         dirNFErrdirNFErr    -120    Directory not found or incomplete pathname    
  348.         afpAccessDenied        -5000    User does not have the correct access to
  349.                                     the file    
  350. */
  351.  
  352. /*****************************************************************************/
  353.  
  354. pascal    OSErr    FSpCatMoveCompat(const FSSpec *source,
  355.                                  const FSSpec *dest);
  356. /*    ヲ Move a file or directory to a different location on on the same volume.
  357.     The FSpCatMoveCompat function moves a file or directory to a different
  358.     location on on the same volume.
  359.  
  360.     source        input:    An FSSpec record specifying the file or directory.
  361.     dest        input:    An FSSpec record specifying the name and location
  362.                         of the directory into which the source file or
  363.                         directory is to be moved.
  364.     
  365.     Result Codes
  366.         noErr                0        No error    
  367.         nsvErr                -35        No such volume    
  368.         ioErr                -36        I/O error    
  369.         bdNamErr            -37        Bad filename or attempt to move into
  370.                                     a file    
  371.         fnfErr                -43        File not found    
  372.         wPrErr                -44        Hardware volume lock    
  373.         fLckdErr            -45        Target directory is locked    
  374.         vLckdErr            -46        Software volume lock    
  375.         dupFNErr            -48        Duplicate filename and version    
  376.         paramErr            -50        No default volume    
  377.         badMovErr            -122    Attempt to move into offspring    
  378.         wrgVolTypErr        -123    Not an HFS volume    
  379.         afpAccessDenied        -5000    User does not have the correct access to
  380.                                     the file    
  381. */
  382.  
  383. /*****************************************************************************/
  384.  
  385. pascal    OSErr    FSpExchangeFilesCompat(const FSSpec *source,
  386.                                        const FSSpec *dest);
  387. /*    ヲ Exchange the data stored in two files on the same volume.
  388.     The FSpExchangeFilesCompat function swaps the data in two files by
  389.     changing the information in the volume's catalog and, if the files
  390.     are open, in the file control blocks.
  391.     Differences from FSpExchangeFiles: Correctly exchanges files on volumes
  392.     that don't support PBExchangeFiles. FSpExchangeFiles attempts to support
  393.     volumes that don't support PBExchangeFiles, but in System 7, 7.0.1, 7.1,
  394.     and 7 Pro, the compatibility code just doesn't work on volumes that
  395.     don't support PBExchangeFiles (even though you may get a noErr result).
  396.     System Update 3.0 and System 7.5 and later have the problems in
  397.     FSpExchangeFiles corrected.
  398.     
  399.     Result Codes
  400.         noErr                0        No error    
  401.         nsvErr                -35        Volume not found    
  402.         ioErr                -36        I/O error    
  403.         fnfErr                -43        File not found    
  404.         fLckdErr            -45        File is locked    
  405.         vLckdErr            -46        Volume is locked or read-only    
  406.         paramErr            -50        Function not supported by volume    
  407.         volOfflinErr        -53        Volume is offline    
  408.         wrgVolTypErr        -123    Not an HFS volume    
  409.         diffVolErr            -1303    Files on different volumes    
  410.         afpAccessDenied        -5000    User does not have the correct access    
  411.         afpObjectTypeErr    -5025    Object is a directory, not a file    
  412.         afpSameObjectErr    -5038    Source and destination files are the same    
  413. */
  414.  
  415. /*****************************************************************************/
  416.  
  417. pascal    short    FSpOpenResFileCompat(const FSSpec *spec,
  418.                                      SignedByte permission);
  419. /*    ヲ Open a file's resource file.
  420.     The FSpOpenResFileCompat function opens the resource file specified
  421.     by spec.
  422.     
  423.     spec            input:    An FSSpec record specifying the file whose
  424.                             resource file is to be opened.
  425.     permission        input:    A constant indicating the desired file access
  426.                             permissions.
  427.     function result    output:    A resource file reference number, or if there's
  428.                             an error -1.
  429.     
  430.     Result Codes
  431.         noErr                0        No error
  432.         nsvErr                ミ35        No such volume
  433.         ioErr                ミ36        I/O error
  434.         bdNamErr            ミ37        Bad filename or volume name (perhaps zero
  435.                                     length)
  436.         eofErr                ミ39        End of file
  437.         tmfoErr                ミ42        Too many files open
  438.         fnfErr                ミ43        File not found
  439.         opWrErr                ミ49        File already open with write permission
  440.         permErr                ミ54        Permissions error (on file open)
  441.         extFSErr            ミ58        Volume belongs to an external file system
  442.         memFullErr            ミ108    Not enough room in heap zone
  443.         dirNFErr            ミ120    Directory not found
  444.         mapReadErr            ミ199    Map inconsistent with operation
  445. */
  446.  
  447. /*****************************************************************************/
  448.  
  449. pascal    void    FSpCreateResFileCompat(const FSSpec *spec,
  450.                                        OSType creator,
  451.                                        OSType fileType,
  452.                                        ScriptCode scriptTag);
  453. /*    ヲ Create a resource file.
  454.     The FSpCreateResFileCompat function creates a new resource file with
  455.     the specified type, creator, and script code.
  456.     Differences from FSpCreateResFile: FSpCreateResFileCompat correctly
  457.     sets the fdScript in the file's FXInfo record to scriptTag if the
  458.     problem isn't fixed in the File Manager code.
  459.     
  460.     spec        input:    An FSSpec record specifying the resource file to create.
  461.     creator        input:    The creator of the new file.
  462.     fileType    input    The file type of the new file.
  463.     scriptCode    input:    The code of the script system in which the file
  464.                         name is to be displayed.
  465.     
  466.     Result Codes
  467.         noErr                0        No error
  468.         dirFulErr            ミ33        Directory full
  469.         dskFulErr            ミ34        Disk full
  470.         nsvErr                ミ35        No such volume
  471.         ioErr                ミ36        I/O error
  472.         bdNamErr            ミ37        Bad filename or volume name (perhaps zero
  473.                                     length)
  474.         tmfoErr                ミ42        Too many files open
  475.         wPrErrw                ミ44        Disk is write-protected
  476.         fLckdErr            ミ45        File is locked
  477. */
  478.  
  479. /*****************************************************************************/
  480.  
  481. #ifdef __cplusplus
  482. }
  483. #endif
  484.  
  485. #include "OptimizationEnd.h"
  486.  
  487. #endif    /* __FSPCOMPAT__ */
  488.  
  489.